package aprendamos.java.service;

import aprendamos.java.bean.ClienteDTO;
import aprendamos.java.dao.ClienteDAO;
import aprendamos.java.dao.DAOFactory;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.*;

// Un servicio es un componente de la capa de negocio
// (capa model)
// Un servicio puede invocar a uno o mas DAOs
// (DAO Data Access Object)

public class ClienteService implements ClienteService_I {
	
	
	// Referenciamos al dao de la entidad cliente
	DAOFactory fabrica = DAOFactory.getDAOFactory(DAOFactory.MYSQL);
	
	ClienteDAO objClienteDAO = fabrica.getClienteDAO();
	
	public int registraElCliente(ClienteDTO objCliente) throws Exception {
		
		// aqui agremos un poquito de logica
		// como sabemos que el atributo isFoto esta llegando nulo
		// lo generamos a partir del atributo foto (de tipo File)
		
		if(objCliente.getFoto()!=null){
			InputStream tempo = new FileInputStream(objCliente.getFoto());
			objCliente.setIsFoto(tempo);
		}
		
		return objClienteDAO.registraCliente(objCliente);
		
	}	
	
	public List<ClienteDTO> listaClientesPorNombre(String nombre) throws Exception{
		
		System.out.println("dentro del listaCliente del Service");
		// Aqui podemos colocar logica adicional antes de invocar al metodo
		// del  DAO
		
		return objClienteDAO.listaPorNombre(nombre);
		
	}
	
	public ClienteDTO buscaClientePorUsuario(String usuario) 
	throws Exception {

		// aqui podriamos tener mas logica
	
		return objClienteDAO.buscaPorUsuario(usuario);

	}
	
	
	

}
